package javaStudy.线程.卖票;

public class SellTicket implements Runnable{
private int tickets=100;
private Object obj=new Object();

    @Override
    public void run() {
        while(true) {
            /*
            当线程一进来时，拿到tickets，进入休眠，其他线程也会进来，
            此时tickets还没有进行减减操作，会出现出售同一张票的情况，
            所有需要一把锁，当一个线程进来，锁里面的操作只能这个线程执行，
            当此线程执行完，其他线程才可以继续执行 。
             */
            synchronized (obj) {
                if (tickets > 0) {
                    System.out.println(Thread.currentThread().getName() + "正在售卖" + tickets + "张票");
                    tickets--;
                }
            }
            //出票需要时间，让线程休眠100毫秒
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
